#ifndef FrameNode_H_
#define FrameNode_H_
//g2o
#include "g2o/core/graph_optimizer_sparse.h"
#include "g2o/solvers/pcg/linear_solver_pcg.h"
#include "g2o/math_groups/se3quat.h"
#include "./graph/vertex_se3_quat.h"
#include "./graph/edge_se3_quat.h"

//other
#include <stdio.h>
#include <string.h>
//#include "RGBDFrame.h"
#include "FrameMatcher.h"
#include "RGBDCamera.h"
#include "myutils.h"
#include <string>
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/registration/icp.h>
#include <pcl/filters/passthrough.h>
class Transformation;
class FrameNode {
	public:
		FrameNode * next;
		FrameNode * prev;
		RGBDFrame * frame;
		Transformation * transformation;
		Eigen::Matrix4f	matrix;
		g2o::VertexSE3 * g2oVertex;
		bool locked;
		int id;
		void store(string path);
		void load(string path, RGBDCamera * cam,FrameNode ** nodes);
	public:
		EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
#endif
